#ifndef __CONTEXTO_DE_EJECUCION_H__
#define __CONTEXTO_DE_EJECUCION_H__

#include "InformacionCarrera.h"
#include "InformacionMateria.h"
#include "InformacionRestriccionesDeterministicas.h"
#include "InformacionRestriccionesNoDeterministicas.h"

namespace modelo {

	class ContextoDeEjecucion 
	{
	public:
		ContextoDeEjecucion(void);
		~ContextoDeEjecucion(void);

		CatedraMateria* BuscarCatedra(string codigoMateria, string codigoCatedra);
		InformacionMateria* BuscarInformacionMateria(string codigo);
		InformacionMateriaSegunCarrera* BuscarInformacionMateriaSegunCarrera(string codigo);

		//Accesibilidad
		InformacionCarrera* GetInformacionCarrera() {return informacionCarrera;}
		list<InformacionMateria*> GetInformacionMaterias() {return informacionMaterias;}
		InformacionRestriccionesDeterministicas* GetInformacionRestriccionesDeterministicas() {return restriccionesDeterministicas;}
		InformacionRestriccionesNoDeterministicas* GetInformacionRestriccionesNoDeterministicas() {return restriccionesNoDeterministicas;}

		void SetInformacionCarrera(InformacionCarrera* otraInormacion) {informacionCarrera = otraInormacion;}
		void SetInformacionMaterias(list<InformacionMateria*> otraInformacion) {informacionMaterias = otraInformacion;}
		void SetRestriccionesDeterministicas(InformacionRestriccionesDeterministicas* otrasRestricciones) {restriccionesDeterministicas = otrasRestricciones;}
		void SetRestriccionesNoDeterministicas(InformacionRestriccionesNoDeterministicas* otrasRestricciones) {restriccionesNoDeterministicas = otrasRestricciones;}

	private:
		InformacionCarrera* informacionCarrera;
		list<InformacionMateria*> informacionMaterias;
		InformacionRestriccionesDeterministicas* restriccionesDeterministicas;
		InformacionRestriccionesNoDeterministicas* restriccionesNoDeterministicas;

	};
}
#endif